import { SignInOption } from "@/models/request/roomReq";

export type Assistant = {
  // assistantId: string; //助手用户id
  // assistantName: string; //助手昵称(不需要实名制)
  userId: string; //助手用户id
  nickname: string; //助手昵称(不需要实名制)
  avatar: string; //助手头像
  phone: string; //手机号
};

export type Anchor = {
  userId: string; //连麦主播id
  realName: string; //主播真实姓名
  avatar: string; //主播头像
  phone: string; //邀请主播的电话
  isOwner: string; //是否大主播
};

export type LiveStream = {
  owner: string; //流所有人Id
  ownerName: string; //流所有人真实姓名
  streamName: string; //流名称
  streamId: string; //流ID;
  pushUrl: string; //推流地址
  webRtcPushUrl: string; //连麦专用推流地址
  srtPushUrl: string; //srt专业推流地址
  flvPlayUrl: string; //拉流地址
  rtmpPlayUrl: string; //拉流地址
  hlsPlayUrl: string; //拉流地址
  udpPlayUrl: string; //拉流地址
  videoUrl: string; //回放地址
  status: number; //流状态
};

export type File = {
  id: string; //文件Id
  fileName: string; //文件名称;
  fileUrl: string; //文件地址
  transcodeUrl?: string; //转码文件地址
  pages?: number; //总页数
};

export type FileType = {
  fileId: string; //文件Id
  transcodeImgUrl: string; //转码文件图片地址
  pages: number; //总页数
};

export type FileSyncsType = {
  id: string;
  roomId: string; //房间Id
  fileId: string; //文件Id
  transcode_url: string; //转码文件图片地址
  page: number; //翻页页码
  pages: number; //文件总页码
  offset: number; //偏移量(秒)
};


//美颜等级
export type BeautyLevel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;

//高清级别
export type HDLevel = "SD" | "HD" | "FHD" | "RTC";

export type AudienceSearchType = {
  // roomId: string;
  searchKey?: string;
};

//对外的消息store
export interface Room {
  //这里的是UI状态，免去多层组件传参
  ui: {
    muted: boolean; //静音状态
    debug: boolean; //调试状态
    beauty: BeautyLevel; //美颜值 0~ 9,0表示关闭
    isFront: boolean; //摄像头前置后置
    mode: HDLevel; //高清状态值
    operation: string; //操作类型
    progress: number; //回放播放进度
    videoEnded: boolean; //回放播放结束
  };
  roomRole: string; //房间角色
  tips: string; //房间公告
  roomName: string; //直播间名称
  roomId: string; //房间ID
  status: number; //房间状态
  ownerId: string; //创建人ID
  ownerName: string; //创建人名字
  ownerLogo: string, //创建人头像
  anchorId: string; //开播人(主持)ID，为空则是创建人开播
  anchorName: string; //开播人(主持)人姓名
  anchorLogo: string; //开播人头像
  audioStatus: boolean; // 直播的音频状态
  audienceToast: number; // 连麦的总人数
  passwd: string; //数据库明文存储，后端md5加盐返回，前端也md5加盐进行校验
  files: File[]; //文件列表
  direction: boolean; //房间方向
  type: number; //房间类型
  inviteStatus: number; //邀请状态
  muteStatus: number; //禁言状态
  orgId: string; //机构Id
  orgName: string; //房间名称
  orgLogo: string; //房间Logo

  assistants: Assistant[]; //助手列表
  liveStreams: LiveStream[]; //推拉流ID及地址数组，至少1个主推流地址
  linkStreams: LiveStream[]; //连麦的地址
  preLoadVideo: string; //暖场视频
  pauseVideo: string; //暂停视频(过场视频)
  description: string; //房间结束
  createTime: Date; //创建时间
  startTime: Date; //开始时间
  endTime: Date; //结束时间

  duration: number; //直播或回放时长
  visits: number; //访问人次
  shares: number; //分享数
  likes: number; //点赞数
  picUrl: string; //房间图片
  forceSignIn: boolean // 强制签到
  signInOptions: SignInOption[], //签到选项
  allowShare: boolean //是否允许分享 
}
